/**
 * 対抗戦集計（詳細）画面 コントローラ
 */
APP.controller('TaikouResultCtrl', function($http, $window, $timeout) {
  
  // thisを保持（Ajax内のthisと混同を防ぐ為）
  var pthis = this;
  // HTMLファイル名取得
  var fileName = window.location.href.split('/').pop().split(".html").shift();


  /**
   * 初期処理
   */
  pthis.Initialize = function () {

    // 表示用データをクリア
    pthis.datTaikai = [];
    pthis.datTaikouShukei = [];
    pthis.datRekidaiKiroku = undefined;


    // Promiseを使用しJSONを並列取得し、表示処理を実施する
    Promise.all([new Promise(function (resolve, reject) {

      //=== 大会情報JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../Taikai.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 大会情報データ
        pthis.datTaikai = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });

    }), new Promise(function (resolve, reject) {

      //=== 対抗戦集計（詳細）画面 一覧JSONの取得を行う
      $http({
        method  : AJAX_METHOD_GET,
        url     : './'+fileName+'.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        // 全対抗戦集計（詳細）データ
        pthis.datTaikouShukei = response.data;
        resolve();
      }, function errorCallback(response) {
        reject();
      });

    })]).then(function () {

      //=== 歴代記録ダイアログ用JSONを取得
      $http({
        method  : AJAX_METHOD_GET,
        url     : '../../rekidai/RekidaiKirokuTaikou.json' + '?a=' + START_TIMESTAMP,
      }).then(function successCallback(response) {
        
        // 歴代記録は、対抗戦内の競技リストで取得する
        pthis.datTaikouShukei.HeaderList.KyogiList.forEach( function ( kyogiInfo ) {
          // 競技NO＋サブNO
          var RekidaiKirokuKey = kyogiInfo.KyogiNo + "-" + pthis.datTaikouShukei.SubNo;
          // 歴代記録データ
          var tmpRekidaiKiroku = response.data.RekidaiKirokuList[RekidaiKirokuKey];

          // 追加
          if (!!tmpRekidaiKiroku) {
            // undefinedの場合初期化
            if (!pthis.datRekidaiKiroku) {
              pthis.datRekidaiKiroku = [];
            }
            // 歴代記録データに競技名を設定
            tmpRekidaiKiroku.KyogiMei = kyogiInfo.KyogiMei;

            // 歴代記録データを歴代記録一覧に追加
            pthis.datRekidaiKiroku.push(tmpRekidaiKiroku);
          }

        });


      }, function errorCallback(response) {
        // JSON取得エラー
      });
        
    }).catch(function () {
      // JSON取得エラー
    });

  };

  /**
   * 歴代記録ボタンクリックイベント
   */
  pthis.ShowRekidai = function () {

    // 歴代記録ダイアログを表示する
    if (!!pthis.datRekidaiKiroku) {
      RekidaiDialogShow();
    }

  }


  // 初期処理を実行
  pthis.Initialize();

});
